package com.itcam.phaseii.generic;

/**
 * 使用泛型的好处<p>
 * 1.编译时，检查添加元素的类型，提高了安全性<p>
 * 2.减少了类型转换的次数，提高效率<p>
 * 3.不再提示编译警告<p>
 * <p>
 * 泛型的作用<p>
 * 可以再类声明时通过一个标识表示类中某个属性的类型，或者是某个方法的返回值的类型，或者是参数类型
 */
public class Generic03 {
    public static void main(String[] args) {
        //注意，特别强调： E具体的数据类型在定义Person对象的时候指定,即在编译期间，就确定E是什么类型
        Person<String> person = new Person<String>("Cammy");
        person.show(); //String

        Person<Integer> integerPerson = new Person<Integer>(25);
        integerPerson.show(); //Integer


    }
}

class Person<E> {
    E s;//E 表示s 的数据类型, 该数据类型在定义Person 对象的时候指定,即在编译期间，就确定E 是什么类型

    public Person(E s) {
        this.s = s;
    }

    public void show() {
        System.out.println(s.getClass());//显示s的运行类型
    }
}